home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
fb386
/
lib
/
blb
/
menubar.blb
< prev
next >
Wrap
Text File
|
1995-02-15
|
7KB
|
144 lines
61600 '-------------------------- MENUBARルーチン Version 1.62 --------------------------------
61601 *BLB_MENUBAR_DRAW
61602 LINE(0,0)-(BLB_RESO_X-1,19),PSET,%7,BF:I%=0:J%=0:B%=0
61603 WHILE J%<BLB_MENUBAR%
61604 IF MENUBAR%(I%,0)=-1 THEN
61605 A%=MENUBAR%(I%,5):C%=MENUBAR%(I%,4):GOSUB *BLB_MENUBAR_BUTTONDRAW
61606 SYMBOL(B%+11,4),MENUBAR$(I%),.75!,.75!,7:B%=B%+C%:J%=J%+1
61607 ENDIF
61608 I%=I%+1
61609 WEND:BLB_MENUBAR_XLONG%=B%
61610 I%=0:WHILE MENUBAR%(I%,0)<>-1:I%=I%+1:WEND
61611 IF MENUBAR$(I%)="" THEN
61612 A$= "0F0070FC0DC3CFF000F0FD0FC3FCF80DF0DF00008EC31963DC"
61613 A$=A$+"980000C30067069C99F0DF000007C79967CF8C00F800000000"
61614 A$=A$+"000000001CFB07C7F13CC08E4938C3983C0686F138C0A8718E"
61615 A$=A$+"C36118C0874138C16818FC8361F8DF5CE370C06118DF8100F0"
61616 BLB_MEM%(49)=0:FOR A%=0 TO 49:POKE VARPTR(BLB_MEM%(A%)),VAL("&H"+MID$(A$,A%*4+1,4)),2
61617 NEXT:PUT@(MENUBAR%(0,4)\2-34,5)-(MENUBAR%(0,4)\2+34,15),BLB_MEM%,,7
61618 ENDIF
61619 IF BLB_MENUEXIT%=1 THEN
61620 A%=8:B%=BLB_RESO_X-30:C%=19:GOSUB *BLB_MENUBAR_BUTTONDRAW
61621 LINE(B%+9,4)-(B%+11,16),PSET,7,BF:LINE(B%+5,15)-(B%+15,16),PSET,7,B
61622 CONNECT(B%+5,15)-(B%+5,8)-(B%+15,8)-(B%+15,15),%8
61623 LINE(B%+7,13)-(B%+13,14),PSET,7,B:LINE(B%+8,11)-(B%+12,12),PSET,7,B
61624 ENDIF
61625 RETURN
61626 *BLB_MENUBAR_BUTTONDRAW
61627 LINE(B%,0)-STEP(C%-1,19),PSET,%8,BF
61628 LINE(B%+2,2)-STEP(C%-5,15),PSET,%A%,BF
61629 A%=15:GOSUB *BLB_MENUBAR_BUTTON_FRAME:RETURN
61630 *BLB_MENUBAR_BUTTON_FRAME
61631 CONNECT(B%,19)-STEP(0,-19)-STEP(C%-1,0),%A%
61632 CONNECT(B%+1,18)-STEP(0,-17)-STEP(C%-3,0),%A%:RETURN
61633 *BLB_MENUBAR
61634 MB(0)=0:ERASE MB:DIM MB(9):FOR I%=0 TO 9:MB(I%)=-2:NEXT:BLB_MEM%(50)=0
61635 BLB_MX%=MOUSE(4,0):BLB_MY%=MOUSE(5,0):EXIT=0
61636 IF BLB_MX%>BLB_RESO_X-31 AND BLB_MX%<BLB_RESO_X-10 AND BLB_MY%<20 AND BLB_MENUEXIT%=1 THEN
61637 A%=0:I%=0:B%=BLB_RESO_X-30:C%=19
61638 WHILE MOUSE(2,0):BLB_MX%=MOUSE(0):BLB_MY%=MOUSE(1)
61639 A%=-(BLB_MX%>=B%)*(BLB_MX%<B%+20)*(BLB_MY%<20)
61640 IF A%<>I% THEN I%=A%:A%=15-A%*7:GOSUB *BLB_MENUBAR_BUTTON_FRAME
61641 WEND:EXIT=I%:A%=15:GOSUB *BLB_MENUBAR_BUTTON_FRAME:RETURN
61642 ENDIF
61643 *BLB_MENUBAR_MAIN
61644 BLB_MX%=MOUSE(4,0):BLB_MY%=MOUSE(5,0):GOSUB *BLB_MENUBAR_CHOSEN
61645 IF A%<0 THEN *BLB_MENUBAR_RESETRETURN
61646 IF MOUSE(2,0) THEN
61647 BLB_MX%=MOUSE(0):BLB_MY%=MOUSE(1):GOSUB *BLB_MENUBAR_CHOSEN
61648 IF A%<0 THEN
61649 IF MB(1)=-2 AND MB(0)>=0 THEN
61650 A%=0:GOSUB *BLB_MENUBAR_ERASE
61651 ELSE IF MB(0)>=0 THEN
61652 A%=SEARCH(MB,-2)-1:IF A%>0 THEN IF MB(A%)>=0 THEN GOSUB *BLB_MENUBAR_MARK:MB(A%)=-1
61653 ENDIF
61654 GOTO *BLB_MENUBAR_MAIN
61655 ENDIF
61656 IF A%=0 THEN
61657 IF MB(1)>=0 THEN A%=1:GOSUB *BLB_MENUBAR_MARK:A%=2:GOSUB *BLB_MENUBAR_ERASE:MB(1)=-1
61658 IF B%=MB(0) THEN *BLB_MENUBAR_MAIN
61659 A%=0:GOSUB *BLB_MENUBAR_ERASE:MB(0)=B%
61660 A%=0:I%=0:WHILE A%=<B%:WHILE MENUBAR%(I%,0)<>-1:I%=I%+1:WEND:A%=A%+1:I%=I%+1:WEND
61661 I%=I%-1:GOSUB *BLB_MENUBAR_BTNDWN:A%=0:IF MENUBAR%(I%,2)>0 THEN GOSUB *BLB_MENUBAR_PULDWN
61662 ELSE
61663 IF B%=MB(A%) THEN *BLB_MENUBAR_MAIN
61664 IF MB(A%)<>-1 THEN GOSUB *BLB_MENUBAR_MARK
61665 IF MENUBAR%(BLB_MEM%(A%*5)+B%,0)=0 THEN B%=-1
61666 MB(A%)=B%:IF B%>=0 THEN GOSUB *BLB_MENUBAR_MARK
61667 I%=A%-1:A%=A%+1:GOSUB *BLB_MENUBAR_ERASE:A%=I%+1
61668 IF MB(A%)>=0 AND MENUBAR%(BLB_MEM%(A%*5)+MB(A%),2)>0 THEN GOSUB *BLB_MENUBAR_PULDWN
61669 ENDIF
61670 GOTO *BLB_MENUBAR_MAIN
61671 ELSE
61672 BLB_MX%=MOUSE(7,0):BLB_MY%=MOUSE(8,0):GOSUB *BLB_MENUBAR_CHOSEN
61673 IF A%<0 THEN *BLB_MENUBAR_RESETRETURN
61674 IF A%=0 THEN
61675 I%=0:WHILE A%=<B%:WHILE MENUBAR%(I%,0)<>-1:I%=I%+1:WEND:A%=A%+1:I%=I%+1:WEND
61676 IF MENUBAR%(I%-1,2)=0 THEN A%=0:GOSUB *BLB_MENUBAR_ERASE2:RETURN
61677 ELSE
61678 IF SEARCH(MB,-1)>=0 THEN
61679 IF MENUBAR%(BLB_MEM%(A%*5)+B%,0)=0 THEN *BLB_MENUBAR_RESETRETURN
61680 ELSE
61681 A%=0:GOSUB *BLB_MENUBAR_ERASE2:RETURN
61682 ENDIF
61683 ENDIF
61684 ENDIF
61685 GOTO *BLB_MENUBAR_MAIN
61686 *BLB_MENUBAR_CHOSEN
61687 IF BLB_MX%<BLB_MENUBAR_XLONG% AND BLB_MY%<20 THEN
61688 B%=-1:I%=0:WHILE BLB_MX%>=0
61689 WHILE MENUBAR%(I%,0)<>-1:I%=I%+1:WEND:B%=B%+1
61690 BLB_MX%=BLB_MX%-MENUBAR%(I%,4):I%=I%+1:WEND:A%=0:RETURN
61691 ENDIF
61692 I%=1:A%=-1
61693 WHILE I%=<SEARCH(MB,-2)-1
61694 IF BLB_MX%>=BLB_MEM%(I%*5+1) AND BLB_MX%=<BLB_MEM%(I%*5+3) AND BLB_MY%>=BLB_MEM%(I%*5+2) AND BLB_MY%<BLB_MEM%(I%*5+4)-1 THEN
61695 A%=I%:B%=(BLB_MY%-BLB_MEM%(I%*5+2))\16:I%=9
61696 ENDIF
61697 I%=I%+1:WEND:RETURN
61698 *BLB_MENUBAR_ERASE
61699 WHILE A%<SEARCH(MB,-2,A%)
61700 PUT@A(BLB_MEM%(A%*5+1),BLB_MEM%(A%*5+2))-(BLB_MEM%(A%*5+3),BLB_MEM%(A%*5+4)),BLB_MEM%,,,,,BLB_MEM%(50+A%)*100+60
61701 MB(A%)=-2:A%=A%+1:WEND:RETURN
61702 *BLB_MENUBAR_ERASE2
61703 WHILE A%<SEARCH(MB,-2)
61704 PUT@A(BLB_MEM%(A%*5+1),BLB_MEM%(A%*5+2))-(BLB_MEM%(A%*5+3),BLB_MEM%(A%*5+4)),BLB_MEM%,,,,,BLB_MEM%(50+A%)*100+60
61705 A%=A%+1:WEND:RETURN
61706 *BLB_MENUBAR_RESETRETURN
61707 A%=0:GOSUB *BLB_MENUBAR_ERASE:RETURN
61708 *BLB_MENUBAR_MARK
61709 LINE(BLB_MEM%(A%*5+1)+1,BLB_MEM%(A%*5+2)+1+MB(A%)*16)-(BLB_MEM%(A%*5+3)-2,BLB_MEM%(A%*5+2)+15+MB(A%)*16),XOR,%7,BF:RETURN
61710 *BLB_MENUBAR_PULDWN
61711 IF A%=0 THEN
61712 BLB_MX%=BLB_MEM%(1):BLB_MY%=20:BLB_MEM%(5)=MENUBAR%(I%,1)
61713 BLB_MEM%(51)=(MENUBAR%(I%,3)+1)\20
61714 ELSE
61715 BLB_MX%=BLB_MEM%(A%*5+3)+1:BLB_MY%=BLB_MEM%(A%*5+2)+MB(A%)*16
61716 I%=BLB_MEM%(A%*5)+MB(A%):BLB_MEM%(A%*5+5)=MENUBAR%(I%,1)
61717 ENDIF
61718 MOUSE 1,,,0:BLB_MEM%(A%*5+6)=BLB_MX%:BLB_MEM%(A%*5+7)=BLB_MY%
61719 BLB_MEM%(A%*5+8)=BLB_MX%+MENUBAR%(I%,3)-1:BLB_MEM%(A%*5+9)=BLB_MY%+MENUBAR%(I%,2)*16+1
61720 BLB_MEM%(52+A%)=(MENUBAR%(I%,3)+1)*(MENUBAR%(I%,2)*16+2)\400+BLB_MEM%(51+A%)+4:MB(A%+1)=-1
61721 GET@A(BLB_MX%,BLB_MY%)-(BLB_MEM%(A%*5+8),BLB_MEM%(A%*5+9)),BLB_MEM,BLB_MEM%(51+A%)*100+60
61722 LINE(BLB_MX%,BLB_MY%)-(BLB_MEM%(A%*5+8),BLB_MEM%(A%*5+9)),PSET,%8,B
61723 LINE(BLB_MX%,BLB_MY%)-(BLB_MEM%(A%*5+8)-1,BLB_MEM%(A%*5+9)-1),PSET,%8,BF,7
61724 FOR I%=0 TO MENUBAR%(I%,2)-1
61725 A$=MENUBAR$(BLB_MEM%(A%*5+5)+I%)
61726 IF A$="" THEN
61727 LINE(BLB_MX%+4,BLB_MY%+7+I%*16)-STEP(BLB_MEM%(A%*5+8)-9-BLB_MX%,0),PSET,%8
61728 ELSE
61729 SYMBOL(BLB_MX%+8,BLB_MY%+I%*16+3),A$,.75!,.75!,%8+2*(MENUBAR%(I%+BLB_MEM%(A%*5+5),0)=0)
61730 IF MENUBAR%(BLB_MEM%(A%*5+5)+I%,2)>0 THEN
61731 CONNECT(BLB_MEM%(A%*5+8)-10,BLB_MY%+I%*16+2)-STEP(6,6)-STEP(-6,6),7,,F,%8+2*(MENUBAR%(I%+BLB_MEM%(A%*5+5),0)=0)
61732 ENDIF
61733 ENDIF
61734 NEXT:MOUSE 1,,,1:RETURN
61735 *BLB_MENUBAR_BTNDWN
61736 A%=0:B%=0:WHILE A%<I%:IF MENUBAR%(A%,0)=-1 THEN B%=B%+MENUBAR%(A%,4)
61737 A%=A%+1:WEND:A%=A%-1
61738 GET@A(B%,0)-(B%+MENUBAR%(I%,4)-1,19),BLB_MEM%,60
61739 BLB_MEM%(1)=B%:BLB_MEM%(2)=0:BLB_MEM%(3)=B%+MENUBAR%(I%,4)-1:BLB_MEM%(4)=19
61740 BLB_MEM%(51)=((MENUBAR(I%,4)+1)\2)*20/2/100
61741 LINE(B%,0)-STEP(MENUBAR%(I%,4)-1,19),PSET,%MENUBAR%(I%,5),B
61742 LINE(B%+1,1)-STEP(MENUBAR%(I%,4)-3,17),PSET,%MENUBAR%(I%,5),B:RETURN